section header vstart = 0
    program_length dd program_end
    code_entry dw start
    realloc_tbl_len dw (segtbl_end-segtbl_begin)/4
    segtbl_begin:
    code_segment dd section.code.start
    data_segment dd section.data.start
    stack_segment dd section.stack.start
    segtbl_end

section code align=16 vstart=0
    start:
        mov ax,[stack_segment]
        mov ss,ax
        mov sp,stack_pointer
        mov ax,[data_segment]
        mov ds,ax
        mov ax,0xb800
        mov es,ax
        mov si,message
        mov di,0

    next:
        mov al,[si]
        cmp al,0
        je exit
        mov byte [es:di],al
        mov byte [es:di+1],0x07
        inc si
        add di,2
        jmp next
    exit:
        jmp $
section data align=16 vstart=0
    message db 'hello world.',0
section stack align=16 vstart=0
    resb 256
    stack_pointer:
section trail align=16
program_end: